package team.knowers.qzhserver.course.datum.datum.service;

import team.knowers.qzhserver.course.datum.datum.entity.dao.DatumDO;

import java.util.Map;
import java.util.Set;

/**
 * @author zcb
 * @date 2024/3/7 21:30
 */
public interface DatumCacheService {
    /**
     * 设置资料库缓存
     * @param datumDO 资料库对象
     */
    void setDatum(DatumDO datumDO);

    /**
     * 根据资料库id获取资料库对象
     * @param id 资料库id
     */
    DatumDO getDatum(String id);

    /**
     * 根据资料库id删除资料库缓存
     * @param id 资料库id
     */
    void delDatum(String id);

    /**
     * 一次性将整个集合（一个课程所拥有的资料库的id）导入缓存
     * @param cid   课程id
     * @param data  课程的所有资料库的id集合
     */
    void setCourseDatumSetAll(String cid, Set<String>data);

    /**
     * 向课程的资料库集合中加入单个数据
     * @param cid   课程id
     * @param id    资料库id
     */
    void setCourseDatumSet(String cid,String id);

    /**
     * 在缓存中查询id是否是属于cid的资料库
     * @param cid   课程id
     * @param id    资料库id
     * @return  id是否是属于cid的资料库
     */
    Boolean existCourseDatumSet(String cid,String id);

    /**
     * 在缓存中删除整个课程的资料库集合
     * @param cid 课程id
     */
    void delCourseDatumSetAll(String cid);

    /**
     * 在缓存中删除某个课程资料库集合中的一个资料库
     * @param cid 课程id
     * @param id    资料库id
     */
    void delCourseDatumSet(String cid,String id);

    /**
     * 从缓存中获取某个课程的资料库集合
     * @param cid 课程id
     * @return 课程的资料库集合
     */
    Set<String> getCourseDatumSet(String cid);
}
